package cc.rengu.redp.bizimpl.upmp.vo;

import cc.rengu.igas.bomp.facade.enums.BompArtifCertTypeEnum;
import cc.rengu.igas.bomp.facade.enums.BompSignLicenceTypeEnum;
import cc.rengu.redp.bizimpl.enums.*;

import java.util.ArrayList;
import java.util.List;

/**
 * 导入间联商户信息时excel的结构初始化
 * Created by Daniel on 2020/4/16.
 */
public class MchntImportExportInit {
    public static List<ExcelColumnAttr> mchntImportBaseInfo = new ArrayList<ExcelColumnAttr>(){{
//        add(new ExcelColumnAttr("mchntNo"            , 15  , false , "商户号"   , ValidatMethodEnum.CHECK_ALPH_OR_NUM));
        add(new ExcelColumnAttr("mchntType"          , 2   , true  , "商户类型"      ,null ));
        add(new ExcelColumnAttr("mchntName"          , 128 , true  , "商户名称"      ,null ));
        add(new ExcelColumnAttr("mchntSimpleName"    , 64  , true  , "商户简称"      ,null ));
        add(new ExcelColumnAttr("mchntBizAddr"       , 256 , true  , "营业地址"      ,null ));
        add(new ExcelColumnAttr("mchntBizProvince"      ,  6    , true   , "注册地址-省"      ,null));
        add(new ExcelColumnAttr("mchntBizCity"          ,  6    , true   , "注册地址-市"      ,null));
        add(new ExcelColumnAttr("mchntBizRegion"          ,  6    , true   , "注册地址-区"      ,null));
        add(new ExcelColumnAttr("mchntNature"        , 3   , true  , "商户性质"      ,null ));
        add(new ExcelColumnAttr("managementScope"       ,  2    , true   , "经营范围"      ,null));
        add(new ExcelColumnAttr("industryType"          ,  4    , true   , "行业类别"      ,null));
        add(new ExcelColumnAttr("signInstId"         , 14  , true  , "签约机构"      ,null ));
        add(new ExcelColumnAttr("mchntLevel"         , 8   , true  , "商户等级"      ,null ));
        add(new ExcelColumnAttr("mchntArea"          , 8   , false , "所属商圈"      , ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("platMchntNo"        , 32  , false , "所属平台商户"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("groupMchntNo"       , 32  , false , "所属集团商户"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("agentMchntNo"       , 32  , false , "所属代理机构"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("mchntLng"           , 16  , false , "商户经度坐标"      ,ValidatMethodEnum.CHECK_LONGITUDE_OR_LATITUDE ));
        add(new ExcelColumnAttr("mchntLat"           , 16  , false , "商户纬度坐标"      ,ValidatMethodEnum.CHECK_LONGITUDE_OR_LATITUDE ));
       // add(new ExcelColumnAttr("mchntExpandType"    , 2   , true  , "商户拓展方式"      ,null ));
        add(new ExcelColumnAttr("marketFlag"         , 1   , true  , "自主开展营销标识"   ,null ));
        add(new ExcelColumnAttr("smsFlag"            , 1   , true  , "发送短信标识"       ,null ));
        add(new ExcelColumnAttr("reconMailFlag"      , 1   , true  , "邮箱发送对账单标识" ,null ));
        add(new ExcelColumnAttr("mchntBizArea"       , 32  , false , "商户营业面积"      ,ValidatMethodEnum.CHECK_1TO2_DEC ));
        add(new ExcelColumnAttr("bizStartTime"       , 6   , false , "营业开始时间"      ,ValidatMethodEnum.CHECK_TIME6 ));
        add(new ExcelColumnAttr("bizEndTime"         , 6   , false , "营业结束时间"      ,ValidatMethodEnum.CHECK_TIME6 ));
        add(new ExcelColumnAttr("employeeNum"        , 8   , false , "员工人数"      ,ValidatMethodEnum.CHECK_ISNUM ));
        add(new ExcelColumnAttr("chainMchntNo"       , 32  , false , "所属连锁商户号"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
//                    add(new ExcelColumnAttr("chainMchntAcctType" , 2   , false , "连锁商户抽成方式"      ,null ));
        add(new ExcelColumnAttr("independentDataFlag", 1   , false , "是否独立维护商户资料"      ,null ));
        add(new ExcelColumnAttr("mchntAttr"          , 2   , true  , "商户属性"      ,null ));
        add(new ExcelColumnAttr("mchntNetworkDomain" , 128 , false , "网络域名"      ,ValidatMethodEnum.CHECK_DOMAIN ));
        add(new ExcelColumnAttr("icpRecordNo"        , 32  , false , "ICP备案号"      ,null ));
        add(new ExcelColumnAttr("ip"                 , 32  , false , "IP地址"      ,ValidatMethodEnum.CHECK_IP ));
        add(new ExcelColumnAttr("mchntSignType"      , 2   , false , "商户签约类型"      ,null ));
        add(new ExcelColumnAttr("realSettleFlag"     , 1   , true  , "是否开通本行卡实时清算",null          ));
        add(new ExcelColumnAttr("mchntSettleMode"    , 2   , true  , "商户结算模式",null               ));
        add(new ExcelColumnAttr("mchntDelayFlag"     , 1   , true  , "商户延迟清算标志"  ,null           ));
//                            add(new ExcelColumnAttr("mchntDelayResaon"   , 256 , true  , "商户延迟清算原因"             ));
        add(new ExcelColumnAttr("cashWithdrawalFlag" , 1   , true  , "开通提现标志"  ,null             ));
        add(new ExcelColumnAttr("managerId"          , 32  , true  , "客户经理工号"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM  ));
        add(new ExcelColumnAttr("managerName"        , 64  , true  , "客户经理名称"      ,null ));
        add(new ExcelColumnAttr("contactName"        , 32  , true  , "联系人姓名"      ,null ));
        add(new ExcelColumnAttr("contactCertType"    , 2   , true  , "联系人证件类型"      ,null ));
        add(new ExcelColumnAttr("contactCertNo"      , 32  , true  , "联系人证件号码"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("certEffectiveDate"  , 8   , true  , "联系人证件生效日期"      ,ValidatMethodEnum.CHECK_DATE8  ));
        add(new ExcelColumnAttr("certExpiryDate"     , 8   , true  , "联系人证件失效日期"      ,ValidatMethodEnum.CHECK_DATE8  ));
        add(new ExcelColumnAttr("contactPhone"       , 32  , true  , "联系人手机号"      ,ValidatMethodEnum.CHECK_PHONE ));
        add(new ExcelColumnAttr("contactEmail"       , 64  , false , "联系人邮箱"      ,ValidatMethodEnum.CHECK_EMAIL ));
    }
    };

    public static List<ExcelColumnAttr> mchntImportSignInfo = new ArrayList<ExcelColumnAttr>(){{
//        add(new ExcelColumnAttr("mchntNo"               , 15    , false  , "商户号"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("licenceType"           ,  8    , false  , "营业执照注册类型"      ,null));
        add(new ExcelColumnAttr("licenceCode"           ,  32   , false  , "经营执照注册号"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM ));
        add(new ExcelColumnAttr("registerCapital"       ,  32   , false  , "注册资本"      ,null));
        add(new ExcelColumnAttr("registerDate"          ,  8    , false  , "商户成立日期"      ,ValidatMethodEnum.CHECK_DATE8));
        add(new ExcelColumnAttr("licenceEffectiveDate"  ,  8    , false  , "营业执照生效日期"      ,ValidatMethodEnum.CHECK_DATE8));
        add(new ExcelColumnAttr("licenceExpiryDate"     ,  8    , false  , "营业执照失效日期"      ,ValidatMethodEnum.CHECK_DATE8));
        add(new ExcelColumnAttr("registerProvince"      ,  6    , true   , "注册地址-省"      ,null));
        add(new ExcelColumnAttr("registerCity"          ,  6    , true   , "注册地址-市"      ,null));
        add(new ExcelColumnAttr("registerArea"          ,  6    , true   , "注册地址-区"      ,null));
        add(new ExcelColumnAttr("registerAddr"          ,  256  , true   , "注册地址-详细地址"      ,null));
        add(new ExcelColumnAttr("mchntSignId"           ,  64   , false  , "商户签约协议号"      ,null));
        add(new ExcelColumnAttr("artifName"             ,  32   , true   , "法人姓名"      ,null));
        add(new ExcelColumnAttr("artifCertType"         ,  2    , true   , "法人证件类型"      ,null));
        add(new ExcelColumnAttr("artifCertNo"           ,  32   , true   , "法人证件号码"      ,ValidatMethodEnum.CHECK_ALPH_OR_NUM));
        add(new ExcelColumnAttr("certEffectiveDate"     ,  8    , true   , "证件生效日期"      ,ValidatMethodEnum.CHECK_DATE8));
        add(new ExcelColumnAttr("certExpiryDate"        ,  8    , true   , "证件失效日期"      ,ValidatMethodEnum.CHECK_DATE8));
        add(new ExcelColumnAttr("artifMobile"           ,  20   , true   , "法人手机号"      ,ValidatMethodEnum.CHECK_PHONE));

    }};

    public static List<ExcelColumnAttr> mchntImportSettlInfo = new ArrayList<ExcelColumnAttr>(){{
//        add(new ExcelColumnAttr("mchntNo"                 , 15    , false  , "商户号"      ,null));
        add(new ExcelColumnAttr("fundType"                ,  2    , true   , "资金类型"      ,null));
        add(new ExcelColumnAttr("baseProdCode"            ,  2    , true   , "基础产品代码"      ,null));
        add(new ExcelColumnAttr("settleType"              ,  2    , true   , "结算方式"      ,null));
        add(new ExcelColumnAttr("settleCycle"             ,  2    , true   , "结算周期"      ,null));
        add(new ExcelColumnAttr("settleAcctType"          ,  2    , true   , "结算账户类型"      ,null));
        add(new ExcelColumnAttr("settleAcctNo"            ,  32   , true   , "结算账户账号"      ,ValidatMethodEnum.CHECK_BANK_CARD_NO));
        add(new ExcelColumnAttr("settleAcctName"          ,  128  , true   , "结算账户名称"      ,null));
        add(new ExcelColumnAttr("settleAcctBankNo"        ,  32   , true   , "结算账户开户行行号"      ,ValidatMethodEnum.CHECK_ISNUM));
        add(new ExcelColumnAttr("settleAcctBankName"      ,  128  , true   , "结算账户开户行名称"      ,null));
        add(new ExcelColumnAttr("settleAcctBankProvince"  ,  32   , false   , "结算账户开户行地址-省"      ,null));
        add(new ExcelColumnAttr("settleAcctBankCity"      ,  32   , false   , "结算账户开户行地址-市"      ,null));
        add(new ExcelColumnAttr("settleAcctBankArea"      ,  32   , false   , "结算账户开户行地址-区"      ,null));

    }};

    public static List<ExcelColumnAttr> mchntExportInfo = new ArrayList<ExcelColumnAttr>(){{
        add(new ExcelColumnAttr("instId"                   ,3   ,true ,"银行代码"         ,null,null));
        add(new ExcelColumnAttr("instName"                 ,64  ,true ,"银行名称"         ,null,null));
        add(new ExcelColumnAttr("mchntNo"                  ,15  ,true ,"商户代码"         ,null,null));
        add(new ExcelColumnAttr("mchntName"                ,100 ,true ,"商户中文名称"      ,null,null));
        add(new ExcelColumnAttr("mchntSimpleName"          ,40  ,true ,"商户中文简称"      ,null,null));
        add(new ExcelColumnAttr("signInstId"               ,10  ,true ,"收单机构代码"      ,null,null));
        add(new ExcelColumnAttr("signInstName"             ,64  ,true ,"收单机构名称"      ,null,null));
        add(new ExcelColumnAttr("managerId"                ,32  ,true ,"客户经理工号"      ,null,null));
        add(new ExcelColumnAttr("managerName"              ,64  ,true ,"客户经理名称"      ,null,null));
        add(new ExcelColumnAttr("industryType"             ,4   ,true ,"行业类别"          ,null,null));
        add(new ExcelColumnAttr("industryName"             ,64  ,true ,"行业类别名称"       ,null,null));
        add(new ExcelColumnAttr("acqAreaCode"              ,4   ,true ,"受理地区代码"       ,null,null));
        add(new ExcelColumnAttr("mchntStatus"              ,2   ,true ,"商户状态"          ,null, BizDataStatusEnum.class ));
        add(new ExcelColumnAttr("auditStatus"              ,2   ,true ,"审核状态"          ,null, BizDataAuditStatusEnum.class));
        add(new ExcelColumnAttr("artifName"                ,40  ,true ,"法人代表"          ,null,null));
        add(new ExcelColumnAttr("artifCertType"            ,2   ,true ,"法人代表证件类型"   ,null, BompArtifCertTypeEnum.class));
        add(new ExcelColumnAttr("artifCertNo"              ,32  ,true ,"法人代表证件号码"   ,null,null));
        add(new ExcelColumnAttr("certEffectiveDate"        ,8   ,true ,"法人证件生效日期"   ,null,null));
        add(new ExcelColumnAttr("certExpiryDate"           ,8   ,true ,"法人证件失效日期"   ,null,null));
        add(new ExcelColumnAttr("artifMobile"              ,20  ,true ,"法人手机号"        ,null,null));
        add(new ExcelColumnAttr("licenceType"              ,2   ,true ,"商户执照类型"      ,null, BompSignLicenceTypeEnum.class));
        add(new ExcelColumnAttr("licenceCode"              ,32  ,true ,"商户执照号码"      ,null,null));
        add(new ExcelColumnAttr("registerCapital"          ,32  ,true ,"商户注册资金"      ,null,null));
        add(new ExcelColumnAttr("registerAddr"             ,256 ,true ,"商户注册地址"      ,null,null));
        add(new ExcelColumnAttr("settleAcctType"           ,2   ,true ,"结算账户类型"      ,null, SettleAccTypeEnum.class));
        add(new ExcelColumnAttr("settleAcctNo"             ,32  ,true ,"结算账号"         ,null,null));
        add(new ExcelColumnAttr("settleAcctName"           ,128 ,true ,"结算账户户名"      ,null,null));
        add(new ExcelColumnAttr("prodCode"                 ,2   ,true ,"标准产品编码"      ,null,null));
        add(new ExcelColumnAttr("prodDesc"                 ,128 ,true ,"标准产品描述"      ,null,null));
        add(new ExcelColumnAttr("baseProdCode"             ,2   ,true ,"基础产品代码"      ,null,null));
        add(new ExcelColumnAttr("baseProdName"             ,64  ,true ,"基础产品名称"      ,null,null));
        add(new ExcelColumnAttr("feeType"                  ,2   ,true ,"费率类型"         ,null, FeeTypeEnum.class));
        add(new ExcelColumnAttr("feeInputMode"             ,1   ,true ,"费率输入方式"      ,null,FeeInputModeEnum.class));
        add(new ExcelColumnAttr("feeCode"                  ,10  ,true ,"现有费率代码"      ,null,null));
        add(new ExcelColumnAttr("feeRate"                  ,8   ,true ,"费率比率"         ,null,null));
        add(new ExcelColumnAttr("feeCappingAmt"            ,20  ,true ,"封顶金额"         ,null,null));
        add(new ExcelColumnAttr("feeFixedAmt"              ,20  ,true ,"固定金额"         ,null,null));
      //  add(new ExcelColumnAttr("feeModifyFlag"            ,1   ,true ,"费率是否支持修改"  ,null,IgasYesOrNoEnum.class));
        add(new ExcelColumnAttr("contactName"              ,32  ,true ,"联系人姓名"       ,null,null));
        add(new ExcelColumnAttr("contactCertType"          ,2   ,true ,"联系人证件类型"    ,null, BompArtifCertTypeEnum.class));
        add(new ExcelColumnAttr("contactCertNo"            ,32  ,true ,"联系人证件号码"    ,null,null));
        add(new ExcelColumnAttr("contactCertEffectiveDate" ,8   ,true ,"联系人证件生效日期" ,null,null));
        add(new ExcelColumnAttr("contactCertExpiryDate"    ,8   ,true ,"联系人证件失效日期" ,null,null));
        add(new ExcelColumnAttr("contactPhone"             ,20  ,true ,"联系电话"         ,null,null));
        add(new ExcelColumnAttr("contactMobile"            ,20  ,true ,"联系人手机号"      ,null,null));
        add(new ExcelColumnAttr("contactEmail"             ,64  ,true ,"联系人邮箱"        ,null,null));
        add(new ExcelColumnAttr("mchntBizAddr"             ,60  ,true ,"营业地址"         ,null,null));
        add(new ExcelColumnAttr("creatTime"                ,32  ,true ,"创建时间"         ,null,null));
        add(new ExcelColumnAttr("auditTime"                ,32  ,true ,"审批通过时间"      ,null,null));
    }
    };
}
